﻿using System.Collections.Generic;
using System.Threading.Tasks;
using Abp;
using Abp.Localization;
using Abp.Notifications;
using pandx.Mulan.Authorization.Users;

namespace pandx.Mulan.Notifications
{
    public interface IAppNotifier
    {
        Task WelcomeToTheApplicationAsync(UserIdentifier user);
        Task ConcurrentLoginPerUser(UserIdentifier user, string remoteIpAddress, string name,string dateTime);
        Task SomeUsersCannotBeImported(UserIdentifier user, string fileToken, string fileType, string fileName);
        Task HaveToCopy(UserIdentifier[] users, long flowInstanceId,string FlowInstanceName,string name);
        Task HaveToVerify(UserIdentifier user, long flowInstanceId,string FlowInstanceName,string name);
        Task NeedToVerify(UserIdentifier[] users, long flowInstanceId,string FlowInstanceName,string name);
        Task SendSimpleMessageAsync(UserIdentifier user, string message, NotificationSeverity severity = NotificationSeverity.Info);

        Task SendCommonMessageAsync(UserIdentifier user, IDictionary<string, object> messageData,
            NotificationSeverity severity = NotificationSeverity.Info);

        Task SendCommonMessageAsync(UserIdentifier user, string title, string content,
            NotificationSeverity severity = NotificationSeverity.Info);
        Task SendLocalizableMessageAsync(UserIdentifier user, LocalizableString localizableMessage, IDictionary<string, object> localizableMessageData = null, NotificationSeverity severity = NotificationSeverity.Info);
    }
}